package org.jeecgframework.web.service;
import net.sf.json.JSONObject;

import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.ComboTree;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.common.model.json.Highchart;
import org.jeecgframework.core.common.service.CommonService;
import org.jeecgframework.web.system.pojo.base.ZyInspectionReportEntity;
import org.jeecgframework.web.system.pojo.base.ZyReportAttachmentEntity;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface ZyInspectionReportServiceI extends CommonService{
	
 	public <T> void delete(T entity);
 	
 	public <T> Serializable save(T entity);
 	
 	public <T> void saveOrUpdate(T entity);
 	
 	/**
	 * 默认按钮-sql增强-新增操作
	 * @param id
	 * @return
	 */
 	public boolean doAddSql(ZyInspectionReportEntity t);
 	/**
	 * 默认按钮-sql增强-更新操作
	 * @param id
	 * @return
	 */
 	public boolean doUpdateSql(ZyInspectionReportEntity t);
 	/**
	 * 默认按钮-sql增强-删除操作
	 * @param id
	 * @return
	 */
 	public boolean doDelSql(ZyInspectionReportEntity t);

	/**@author xiul
	 * 2016-4-20 下午5:52:39
	 * Description 保存附件信息到 zy_report_attachment 表
	 * @param reportId 巡检报告ID
	 * @param attArr zy_file_log 表主键
	 * @param attachType 附件类型
	 */
	public void saveAttachment(String reportId, String[] attArr,String attachType);

	/**@author xiul
	 * 2016-4-27 下午1:11:44
	 * Description 
	 * @param id 巡检报告主键
	 * @param attachType 附件类型
	 */
	public List<Map<String, Object>> findReportAttachment(String id,String attachType);

	/**@author xiul
	 * 2016-5-5 下午5:23:28
	 * Description 删除巡检报告附件
	 * @param irId 巡检报告ID
	 * @param fileBeanId zy_file_log ID
	 * @param type 巡检报告附件类型
	 */
	public void deleteAttach(String irId, String fileBeanId,String type);

	/**@author xiul
	 * 2016-5-5 下午8:37:47
	 * Description 
	 * @param colum 数据库对应列名
	 * @param value 列 对应的值
	 * @param year 年份
	 * @param esTypes 设备机型(多个)
	 * @param departId 设备所属机构I(多个)
	 */
	public List<Map<String, Object>> getIpProblemReportData(String colum,Object value,String year, String departIds, String esTypes);
	

	/**@author xiul
	 * 2016-5-6 下午12:57:27
	 * Description 每个月有多少巡检计划
	 * @param year
	 * @param departIds 设备所属机构ID(多个) 
	 * @param esType 设备机型(多个)
	 * @param departIds 
	 * @return
	 */
	public Map<String, Object> getTotalPlansByMonth(String year, String departIds, String esType);
	//public Map<String, Object> getTotalPlansByMonth(String year, String departIds);

	/**@author xiul
	 * 2016-5-16 上午10:12:09
	 * Description 
	 * @param zyInspectionReport 新
	 * @param zyIp 旧
	 * @param request 
	 */
	public void compareReport(ZyInspectionReportEntity zyInspectionReport, ZyInspectionReportEntity zyIp, HttpServletRequest request);

	/**@author xiul
	 * 2016-5-17 下午5:55:43
	 * Description 报表页 - 导出报告
     * @param fileName 文件名称
     * @param tableData 表格数据字符串
     * @param ipCompany
     * @param response
     */
	public void exportIrReport(String fileName, String tableData, String ipCompany, HttpServletResponse response);

	/**@author xiul
	 * 2016-5-27 上午10:48:53
	 * Description 检查巡检报告设备备件序列号
	 * @param zyIr
	 */
	public void checkReportEsItemSN(ZyInspectionReportEntity zyIr);

	/**@author xiul
	 * 2016-7-27 下午3:15:45
	 * Description 
	 * @param zyInspectionReport
	 */
	public void updateIpAndSavePlanRecord(
			ZyInspectionReportEntity zyInspectionReport);

	/**@author xiul
	 * 2016-7-27 下午3:39:35
	 * Description 
	 * @param request
	 */
	public void uploadIrAttachment(HttpServletRequest request);

	/**@author xiul
	 * 2016-9-19 上午10:49:40
	 * Description 查询巡检问题分析报表 - 按区域汇总 
	 * @param year 年份
	 * @param departIds 院线
	 * @param irExType 巡检问题类型
	 * @param ttIds 省份s
	 */
	public List<Map<String, Object>> getIpProblemReportDataGroupByTerritory(
			String year, String departIds, String irExType, String ttIds);
	
	/**@author xiul
	 * 2016-11-7 下午2:28:49
	 * Description 查询 巡检进度报表
	 * @param year 年份
	 * @param departIds 机构IDs
	 * @return 
	 */
	public List<Highchart> queryIpProgressReportData(String year, String departIds);

	/**@author xiul
	 * 2016-12-7 下午4:48:38
	 * Description 返回机型tree
	 * @return
	 */
	public List<ComboTree> getEsTypesTreeForIrReport();

	/**@author xiul
	 Description 查询 巡检实时报表 数据 
	 * @param company 巡检单位code
	 * @param year 年份
	 * @param type 月报 ，周报
	 * @param egIds 工程师ID
	 */
	public List<Highchart> queryIpReportData(String company, String year, String type, String egIds);

	/**
	 * 当第一次打开巡检报告时自动新建一份巡检报告（非手动 暂存 or 保存）
	 */
	public ZyInspectionReportEntity addReportFirst(String planId);

	/**
	 * 客户巡检进度报表 - 完成比例 - 堆叠柱状图
	 * @param tpRoleUser 是否是第三方指定角色登录
	 * @param year 年份
	 * @param departIds 机构IDs
	 */
	public List<Highchart> queryIpProgressReportDataDuiDie(boolean tpRoleUser, String year, String departIds,String egIdStr);
	/**
	 * @author xiul
	 * 2017-5-11 上午10:14:33
	 * Description 巡检问题分析报表 - 各省问题汇总 - 堆叠柱状图
	 * @param year 年份
	 * @param departIds 院线
	 * @param irExType 巡检问题类型
	 * @param ttIds 省份s
	 */
	public List<JSONObject> queryEachCityPillarData(String year, String departIds, String irExType, String ttIds);

	/**
	 * @author xiul
	 * 2017-5-19 下午2:25:16
	 * Description 巡检问题分析报表点数字跳转过来的datagrid数据查询
	 */ 
	public void queryDataForIpListOfIpProblemAnalysisReport(HttpServletRequest request, DataGrid dataGrid);

	/**@author xiul
	 * 2016-9-20 上午10:31:55
	 * Description 查询设备机型 - 巡检问题报告页 弹出查询
	 */
	/*public void queryEsTypesForIrExReport(DataGrid dataGrid, HttpServletRequest request);*/

	/*
	* 返件报告数据
	* 2018-6-28 上午14:41:55
	* */
	public List<Map<String, Object>> findReturnReportData();

	public List<Map<String, Object>> findReturnReportDataFilter(String returnTime1,String returnTime2,Integer week,Integer month,String status);

}
